package com.share51.novel.service;

import com.share51.novel.entity.Chapter;
import com.share51.novel.entity.Content;
import com.share51.novel.entity.Novel;

import java.util.List;

/**
 * 小说业务处理
 * @author gb
 */
public interface NovelService {

    /**
     * 保存 小说
     * @param novel
     * @return
     */
    Integer save(Novel novel);

    /**
     * 修改 小说
     * @param novel
     * @return
     */
    Integer update(Novel novel);

    /**
     * 根据id获取详情内容
     *
     * @param id
     * @return
     */
    Novel getById(Integer id);

    /**
     * 保存小说章节信息
     * @param chapterList
     * @param novelId
     * @param hostName
     */
    void saveChapter(List<Chapter> chapterList, Integer novelId,String hostName);

    /**
     * 获取所有的章节数据通过状态
     * @param status
     * @return
     */
    List<Chapter> getAllChapterByStatus(Integer status);

    /**
     * 获取所有的章节 url 和 site
     * @return
     */
    List<String> getAllChapterUrlAndSite();

    /**
     * 根据 novelId 获取最新发布的几条的url
     * @param novelId
     * @param chapterLimit
     * @return
     */
    List<String> getChapterByLimit(Integer novelId, int chapterLimit);

    /**
     * 保存正文内容
     * @param content
     * @return
     */
    Integer saveContent(Content content);

    /**
     * 修改章节内容
     * @param chapter
     */
    void updateChapter(Chapter chapter);

    /**
     * 根据连载状态获取 小说列表
     * @param status
     * @return
     */
    List<Novel> getAllNovelBySeriesStatus(Integer status);


    /**
     * 修改内容连载状态
     * @param novel
     */
    void editNovelSeriesStatus(Novel novel);

    /**
     * 修改未发布状态为发布
     * @param novel
     * @param novelWaitPublish
     */
    void editNovelStatusByStatus(Novel novel, int novelWaitPublish);

    /**
     * 获取小说详情，下载使用
     *
     * @param novelId
     * @return
     */
    Novel getNovelInfoByDownload(Integer novelId);

    /**
     * 修改未删除小说状态为正常状态
     * @param novelId
     * @param statusOk
     */
    void updateNovelStatusAndNotDel(Integer novelId, int statusOk);

    /**
     * 获取最新更新的前几条数据
     * @param total
     * @param category
     * @return
     */
    List<Novel> getNewest(int total, Integer category);
}
